package 代码coding题OR模拟题;
/**
 * 这个 题的  骚操作 还挺多的  
 * 
 * @author I adore you
 *
 */
public class leetcode693交替位二进制数 {
	public static void main(String []args) {
		System.out.println(solution(7));
//		System.out.println(Integer.toString(-10,2));
		System.out.println((-1) ^1);
	}
	
	/**
	 * cur  使用 记录 上一次 的 判断 结果 的  
	 * 否则 你怎么 知道 上一次 是什么 对吧 
	 * cur 初始化 为 -1  这很有 讲究的 
	 * 因为 cur =-1 所以 第一次  if判断的 时候  cur ^ temp 必不等于 0  这就是作用
	 * @param n
	 * @return
	 */
	public static boolean advanceSolution(int n) {
		int cur = -1;
		int  temp =0;
		while(n != 0) {
			// 1 的二进制 是  000000001  让 n与 这个 进行 & 运算 很明显 就能 看出 什么 意思对吧
			temp = n & 1;
			if((temp ^ cur )==0) {
				return false;
			}
			n = n>>1;
			cur = temp;
		}
		return true;
	}
	
	
	
	
	
	
	
/**
 * 下面 这个 并不是 什么 高效 的算法 对吧   很 普通 时间 复杂度 为 O（2N） 也就是 O（N）  
 * 这是 O N 的操作	
 * @param n
 * @return
 */
	public static boolean solution(int n) {
		char [] str = Integer.toString(n,2).toCharArray();
		for(int i = 0;i < str.length - 1;i++) {
			if(str[i] == str[i + 1]) {
				return false;
			}
		}
		return true;
	}

}
